<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script>
        // 线程: 一个线程一次只能处理一件事,多个线程就可以多个事情同时进行
		// JS是单线程的!
		// JS中,分了三个任务
			// 1.渲染任务
			// 2.js的代码执行任务
			// 3.事件处理任务
			
		// JS代码的执行顺序
		// 1.先把主任务(代码任务)执行完毕
		// 2.再去执行次要任务(包括setTimeOut和setInterval中的回调函数中的代码)
		
		
		// setTimeOut
		// 至少在指定的时间后执行指定回调函数
		// 因为要等主任务中的代码执行完毕之后,才回去检查,setTimeOut的
		// 回调函数,有没到执行时间
		
		// 问题代码
		for (var i = 0; i < 10; i++) {
			setTimeout(function(){
				console.log(i);
			},0);
		}//打印了10次3
		
		// 解决问题的代码
		for(var i = 0; i < 3; i++) {
			function foo(j) {
				// var j;
				// j = 实参
				// j = i
				return function() {
					console.log(j);
				};
			}
			var f = foo(i);
			setTimeout(f,0);
		}
		
		
    </script>
</head>
<body>
<div>
    我是div的内容
</div>
</body>
</html>